The invention relates to the field of network devices and to systems and methods for allocating network bandwidth between multiple network traffic flows. Network devices enable data communications between two or more information processing devices, such as client and server computers and other electronic devices. Data communications may be conducted over wired and/or wireless network interfaces. Typically, data is partitioned into packets, which are then communicated via one or more network devices to one or more destination clients.
Any set of related packets is referred to as a network traffic flow. A network traffic flow may include all of the packets associated with a specific source and/or destination device, group of devices, or category of devices. A network traffic flow may include all of the packets associated with a specific application, type of application, or type of data. A network traffic flow may include all of the packets associated with a specific network protocol, network address, network port, or a group of network addresses and/or network ports. A network traffic flow may also include any combination of packets associated as described above and/or according to any arbitrary criteria.
Edge network devices are network devices that connect a local-area network (LAN) to a wide-area network (WAN), such as the internet. Example edge network devices include network routers, switches, gateways, firewalls, and WAN optimization devices. Edge network devices may handle packets generated by and directed to large numbers of source and destination devices over the same interface. For example, an edge network device may process network traffic flows passing between a wide-area network (WAN) and multiple source and destination devices on a local-area network (LAN). The bandwidth or data communications capacity of a WAN limits the amount of data or the rate of network packets that can be sent or received by a LAN through an edge network device.
If the bandwidth limit of a WAN, edge network device, and/or any other intervening network device is reached or exceeded by network traffic flows, packets may be delayed or dropped. Depending on the type of data being communicated over the network, these traffic disruptions may adversely affect the performance of applications on a client network. For example, clients receiving voice or streaming video data may be adversely affected by even small delays or losses of packets.
Because of the limits on network device bandwidth, many edge network devices include quality of service (QoS) functionality and QoS policies enabled by this functionality. QoS functionality enables network devices to prioritize between different network traffic classes and flows in allocating bandwidth. QoS policies allow network administrators to provide different priorities for different network traffic classes and flows based on factors such as the associated source, destination, user, application, or data type. One type of QoS policy enables administrators to specify a minimum guaranteed bandwidth value for a network traffic flow. Other QoS policies may include a maximum latency or delay, maximum error rate, or maximum packet dropping rate for a network traffic flow. A scheduler in an edge networking device prioritizes packets of network traffic flows to implement the desired QoS policies.
QoS policies are only relevant and necessary when two or more network traffic flows are competing for link bandwidth. Competition for network bandwidth occurs at network bottlenecks or points of congestion, where the available bandwidth for network traffic flows decreases. A change in available bandwidth can arise due to physical constraints, such as an interconnection between two physical layers with differing bandwidths, and/or due to logical constraints, such as a service policy enforcing a reduced bandwidth on a wide-area network link.
A network device that is a bottleneck or point of congestion for network traffic flows is a natural place to implement QoS. By acting as a point of congestion for network traffic flows, the network device effectively controls the rate of all network traffic flows that pass through it. For example, with outgoing network traffic flows, where the network traffic flow originates at the LAN and passes through an edge network device to a WAN, an edge network device is often a natural bottleneck, because the bandwidth of the WAN is much less than that of the LAN.
In some applications, it is useful to implement QoS in a network device that is not a bottleneck. It is straightforward to move a bottleneck “upstream” of an existing bottleneck, where “upstream” means in the direction of the greater bandwidth.
However, for incoming network traffic flows, where the network traffic flow passes from a WAN through an edge network device to a LAN on its way to destination devices, the edge network device may not be the bottleneck for these traffic flows. For example, one or more upstream network devices, such as other edge network devices transferring network traffic flows from their source devices to the WAN, may operate as network traffic bottlenecks. Because upstream network devices may act as network traffic flow bottlenecks, it is difficult for edge network devices to make incoming network traffic flows conform to its desired QoS. Additionally, these upstream network devices may be configured to provide QoS functionality that hinders or contradicts the edge device's desired QoS functions.